{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0efee6f2",
   "metadata": {},
   "source": [
    "# U-Net标签的制作\n",
    "使用之前写过的KMeans聚类来辅助标注，将二聚类的结果以8位彩色png存储，方便U-Net训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "674127bd",
   "metadata": {},
   "outputs": [],
   "source": [
    "import cv2\n",
    "from pylab import *\n",
    "\n",
    "\n",
    "def img2array(img):\n",
    "    img = cv2.resize(img, (300, 300))\n",
    "    # 由BGR改为RGB防止颜色偏差\n",
    "    img = img[:, :, [2, 1, 0]]\n",
    "    features = list()\n",
    "    for x in range(300):\n",
    "        for y in range(300):\n",
    "            features.append([img[x][y][0], img[x][y][1], img[x][y][2]])\n",
    "    features = np.array(features, 'f')  # 变为数组\n",
    "    return img, features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "00d58382",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义距离(使用RGB的值之间的距离)\n",
    "def dist(vecA, vecB):\n",
    "    sum = 0\n",
    "    for i in range(3):\n",
    "        if vecA[i] != vecA[i]:\n",
    "            vecA[i] = 0\n",
    "        if vecB[i] != vecB[i]:\n",
    "            vecB[i] = 0\n",
    "        sum += (int(vecA[i]) - int(vecB[i])) ** 2\n",
    "    return sqrt(sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8c901b76",
   "metadata": {},
   "outputs": [],
   "source": [
    "def rand_cent(data_mat, k):\n",
    "    n = shape(data_mat)[1]  # 获取坐标维数\n",
    "    centroids = mat(zeros((k, n)))  # k个n维的点\n",
    "    for j in range(n):\n",
    "        minJ = min(data_mat[:, j])  # 本维最小值\n",
    "        rangeJ = float(max(data_mat[:, j]) - minJ)  # 本维的极差\n",
    "        centroids[:, j] = mat(minJ + rangeJ * np.random.rand(k, 1))  # 随机值\n",
    "    return centroids\n",
    "\n",
    "\n",
    "#     print(centroids)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ad45ff75",
   "metadata": {},
   "outputs": [],
   "source": [
    "def kMeans(data_mat, k):\n",
    "    m = shape(data_mat)[0]\n",
    "    # 初始化点的簇\n",
    "    cluster_assment = mat(zeros((m, 2)))  # 类别，距离\n",
    "    # 随机初始化聚类初始点\n",
    "    centroid = rand_cent(data_mat, k)\n",
    "    cluster_changed = True\n",
    "    # 遍历每个点\n",
    "    while cluster_changed:  # 等到迭代不发生变化即停止\n",
    "        cluster_changed = False\n",
    "        for i in range(m):\n",
    "            min_index = -1\n",
    "            min_dist = inf\n",
    "            for j in range(k):\n",
    "                distance = dist(data_mat[i], np.array(centroid)[j])\n",
    "                if distance < min_dist:\n",
    "                    min_dist = distance\n",
    "                    min_index = j\n",
    "            if cluster_assment[i, 0] != min_index:\n",
    "                cluster_changed = True\n",
    "                cluster_assment[i, :] = min_index, min_dist ** 2\n",
    "        # 计算簇中所有点的均值并重新将均值作为质心\n",
    "        for j in range(k):\n",
    "            per_data_set = data_mat[nonzero(cluster_assment[:, 0].A == j)[0]]\n",
    "            centroid[j, :] = mean(per_data_set, axis=0)\n",
    "        t=[0,0,0]\n",
    "        if (sum(centroid[0,:])<sum(centroid[1,:]))and(sum(centroid[0,:])>300):\n",
    "            for i in range(3):\n",
    "                t[i] = centroid[0,i]\n",
    "                centroid[0,i] = centroid[1,i]\n",
    "                centroid[1,i] = t[i]\n",
    "    return centroid, cluster_assment"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1475b8f9",
   "metadata": {},
   "source": [
    "以上是实验2时的KMeans聚类函数，用于辅助生成标签文件，接下来将标签存为png格式以便U-Net训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7ff039ad",
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.cluster.vq import *\n",
    "from PIL import Image\n",
    "import os\n",
    "\n",
    "\n",
    "def kMeansSave(Img, filename):\n",
    "    Img, Features = img2array(Img)\n",
    "    # 聚类\n",
    "    centroids, variance = kMeans(Features, 2)\n",
    "    # 使用scipy.cluster.vq绘制聚类结果\n",
    "    code, distance = vq(Features, np.nan_to_num(centroids))\n",
    "    # 用聚类标记创建图像\n",
    "    codeimg = code.reshape(224， 224)\n",
    "    # np_array = np.zeros((224, 224, 3), dtype=np.uint8)\n",
    "    image = Image.fromarray(codeimg)\n",
    "    image.save(f'./TestDataSet(resized)/labels/{filename}.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c1c2ad10",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1000).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1002).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1004).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1006).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1007).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1010).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1011).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1019).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1021).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1023).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1024).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1026).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1033).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1034).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1035).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1036).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (104).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1042).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1044).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1052).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1058).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1059).jpeg\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\wang\\AppData\\Roaming\\Python\\Python37\\site-packages\\numpy\\core\\fromnumeric.py:3373: RuntimeWarning: Mean of empty slice.\n",
      "  out=out, **kwargs)\n",
      "C:\\Users\\wang\\AppData\\Roaming\\Python\\Python37\\site-packages\\numpy\\core\\_methods.py:163: RuntimeWarning: invalid value encountered in true_divide\n",
      "  ret, rcount, out=ret, casting='unsafe', subok=False)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (106).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1062).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1067).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1070).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1074).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1075).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (108).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1083).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1085).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1089).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (109).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1092).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1095).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1098).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1099).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (11).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1108).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (111).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1112).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1117).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1118).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1119).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1120).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1121).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1122).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1127).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1134).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1137).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1138).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (114).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1141).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1143).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1146).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1149).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1153).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1155).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1163).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1164).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1168).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1170).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1171).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1172).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1182).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1184).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1185).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1186).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1189).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (119).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1190).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1192).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1196).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1197).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (12).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1201).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1202).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1204).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1211).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1215).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1219).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1220).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1223).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1226).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1233).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1246).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1250).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1252).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1268).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1269).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1272).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1275).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1279).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1283).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1285).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1286).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1291).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1292).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1293).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1295).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1296).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1297).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1298).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1299).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1300).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1304).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1314).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1315).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1316).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1319).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (132).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1327).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1328).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1330).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1333).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1338).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1339).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1341).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1345).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1346).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1347).jpeg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1351).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1353).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1354).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1366).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1370).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1372).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1375).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (138).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1387).jpeg\n",
      "D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/cloud (1389).jpeg\n"
     ]
    }
   ],
   "source": [
    "imgpath = 'D:/JupyterProject/ML_CurriculumDesign/TestDataSet(resized)/cloud/'\n",
    "image_list = os.listdir(imgpath)\n",
    "i= 0\n",
    "for name in image_list:\n",
    "#     i = i+ 1\n",
    "#     if i>=1600:\n",
    "        print(os.path.join(imgpath, name))\n",
    "        img = cv2.imread(os.path.join(imgpath, name))\n",
    "        filename = os.path.basename(name).split('.')[0]\n",
    "        kMeansSave(img, filename)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "87ea462e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
